import json
import re

import pandas as pd

from Agent.Agent import Agent
from llm import llm, super_eval, enc
from SeqTools.ActionDetectorA import *

prompt = '''

以下是深海作业A下放阶段各动作的判断规则详细解释：

### 1.ON DP（动力定位开启）
- **相关字段**：P3_33、P3_18
- **判断规则**：当P3_33或P3_18的数值从0开始增加时，即表示动力定位系统开启。
- **解释**：动力定位系统是船舶在海中保持位置和航向的重要系统。在进行深海作业时，开启动力定位是确保作业安全和准确的前提条件。因此，在下放阶段开始前，需要先开启动力定位系统，以保证后续作业的顺利进行。

### 2.A架开机
- **相关字段**：Ajia-3_v、Ajia-5_v
- **判断规则**：当Ajia-3_v和Ajia-5_v的电流值从“error”变为0时，表示A架开机。
- **解释**：A架是深海作业中用于发射和回收设备的重要起重装置。在作业开始前，需要先启动A架，使其处于工作状态，以便后续进行设备的下放操作。

### 3.折臂吊车开机
- **相关字段**：13-11-6_v
- **判断规则**：当13-11-6_v的数值从0开始增加时，表示折臂吊车开机。
- **解释**：折臂吊车是一种灵活的起重设备，主要用于小艇等设备的下放和回收。在下放阶段，需要启动折臂吊车，为小艇的下放做好准备。

### 4.小艇检查完毕
- **相关字段**：13-11-6_v
- **判断规则**：当13-11-6_v的数值增加到某个值后回落，回落前的最后一个值对应的时刻即为小艇检查完毕的时间。
- **解释**：在小艇下水之前，需要对其进行详细检查，确保其状态良好，符合下水作业的要求。检查完毕后，相关数值会有所体现。

### 5.小艇入水
- **相关字段**：13-11-6_v
- **判断规则**：当13-11-6_v的数值增加到某个值后回落，回落前的最后一个值对应的时刻即为小艇入水的时间。
- **解释**：小艇入水是下放阶段的重要环节，标志着小艇正式开始参与作业。通过监测相关数值的变化，可以准确判断小艇入水的时刻。

### 6.征服者起吊
- **相关字段**：Ajia-3_v、Ajia-5_v
- **判断规则**：当Ajia-3_v和Ajia-5_v的电流值从稳定值（50多）开始增加时，表示征服者起吊。
- **解释**：征服者是深海作业中的重要设备，负责海底探测，起吊操作是将其从船上吊起，准备进行水下作业的关键步骤。电流值的变化反映了设备的运行状态，从而可以判断起吊的开始时刻。

### 7.征服者入水
- **相关字段**：Ajia-3_v、Ajia-5_v
- **判断规则**：在缆绳解除的时间点往前推一分钟，即为征服者入水的时间。
- **解释**：征服者入水后，需要进行一系列的水下作业。通过在缆绳解除前一分钟确定入水时间，可以更准确地把握作业流程。

### 8.缆绳解除
- **相关字段**：Ajia-3_v、Ajia-5_v
- **判断规则**：当Ajia-3_v和Ajia-5_v的电流值从高值回落至稳定值（50多）时，表示缆绳解除。
- **解释**：缆绳解除意味着征服者已经完全入水并开始独立作业，不再需要船上的设备进行牵引。电流值的回落反映了这一状态的变化。

### 9.A架摆回
- **相关字段**：Ajia-3_v、Ajia-5_v
- **判断规则**：在征服者入水后，当Ajia-3_v和Ajia-5_v的电流值重新增加到峰值时，表示A架摆回。
- **解释**：A架摆回是将A架从工作位置恢复到初始位置的操作，为后续的回收阶段做好准备。电流值的重新增加反映了A架的再次动作。

### 10.小艇落座
- **相关字段**：13-11-6_v
- **判断规则**：当13-11-6_v的数值增加到某个值后回落，回落前的最后一个值对应的时刻即为小艇落座的时间。
- **解释**：小艇落座表示小艇已经完成下放任务，稳定地放置在预定位置，准备进行后续作业，通常小艇落座后折臂吊车会关机。

### 11.折臂吊车关机
- **相关字段**：13-11-6_v
- **判断规则**：当13-11-6_v的数值归零时，表示折臂吊车关机。
- **解释**：在下放阶段结束后，折臂吊车完成任务，可以关闭以节省能源并避免不必要的损耗。

### 12.A架关机
- **相关字段**：Ajia-3_v、Ajia-5_v
- **判断规则**：当Ajia-3_v和Ajia-5_v的电流值变为“error”时，表示A架关机。
- **解释**：A架在完成下放阶段的所有任务后，可以关闭以待下次使用。

### 13.OFF DP（动力定位关闭）
- **相关字段**：P3_33、P3_18
- **判断规则**：当P3_33和P3_18的数值归零时，表示动力定位系统关闭。
- **解释**：在下放阶段结束后，如果船舶不需要继续进行其他作业，可以关闭动力定位系统，以节省能源并减少设备磨损。

以下是深海作业A回收阶段各动作的判断规则详细解释：

### 1.A架开机
- **相关字段**：Ajia-3_v、Ajia-5_v
- **判断规则**：当Ajia-3_v和Ajia-5_v的电流值从“error”变为0时，表示A架开机。
- **解释**：在回收阶段开始前，需要先启动A架，使其处于工作状态，以便后续进行设备的回收操作。

### 2.折臂吊车开机
- **相关字段**：13-11-6_v
- **判断规则**：当13-11-6_v的数值从0开始增加时，表示折臂吊车开机。
- **解释**：折臂吊车在回收阶段主要用于小艇等设备的回收，需要先启动设备。

### 3.A架摆出
- **相关字段**：Ajia-3_v、Ajia-5_v
- **判断规则**：在征服者起吊前，当Ajia-3_v和Ajia-5_v的电流值到达峰值时，表示A架摆出。
- **解释**：A架摆出是将A架从初始位置移动到工作位置，为起吊征服者做好准备。

### 4.小艇检查完毕
- **相关字段**：13-11-6_v
- **判断规则**：当13-11-6_v的数值增加到某个值后回落，回落前的最后一个值对应的时刻即为小艇检查完毕的时间。
- **解释**：在小艇回收前，需要对其进行检查，确保其状态良好，符合回收条件。

### 5.小艇入水
- **相关字段**：13-11-6_v
- **判断规则**：当13-11-6_v的数值增加到某个值后回落，回落前的最后一个值对应的时刻即为小艇入水的时间。
- **解释**：小艇入水是回收阶段的开始，表示小艇已经进入水中，准备进行回收操作。

### 6.缆绳挂妥
- **相关字段**：Ajia-3_v、Ajia-5_v
- **判断规则**：在征服者出水前一分钟，当Ajia-3_v和Ajia-5_v的电流值开始增加时，表示缆绳挂妥。
- **解释**：缆绳挂妥意味着征服者的缆绳已经固定好，准备将其从水中吊起。

### 7.征服者出水
- **相关字段**：Ajia-3_v、Ajia-5_v
- **判断规则**：当Ajia-3_v和Ajia-5_v的电流值达到峰值时，表示征服者出水。
- **解释**：征服者出水是回收阶段的关键步骤，表示征服者已经从水中被吊起，即将被放置在船上。

### 8.小艇落座
- **相关字段**：13-11-6_v
- **判断规则**：当13-11-6_v的数值增加到某个值后回落，回落前的最后一个值对应的时刻即为小艇落座的时间。
- **解释**：小艇落座表示小艇已经完成回收，稳定地放置在预定位置，通常小艇落座后折臂吊车会关机，并且和征服者落座时间差距不大。

### 9.折臂吊车关机
- **相关字段**：13-11-6_v
- **判断规则**：当13-11-6_v的数值归零时，表示折臂吊车关机。
- **解释**：在回收阶段结束后，折臂吊车完成任务，可以关闭以节省能源。

### 10.征服者落座
- **相关字段**：Ajia-3_v、Ajia-5_v
- **判断规则**：当Ajia-3_v和Ajia-5_v的电流值从高值回落至稳定值（50多）时，表示征服者落座。
- **解释**：征服者落座表示征服者已经完全放置在船上，回收操作完成。

### 11.A架关机
- **相关字段**：Ajia-3_v、Ajia-5_v
- **判断规则**：当Ajia-3_v和Ajia-5_v的电流值变为“error”时，表示A架关机。
- **解释**：在回收阶段结束后，A架完成所有任务，可以关闭以待下次使用。

以上动作除了开机先后外，基本按照上述顺序运行。
重点：下放和回收看`ON DP`是否覆盖大部分作业时间。
下放阶段，A架开启和`ON DP`一般时间比较近（不分先后）。


我会给你一个表格，并且标注了一些特征点，你会根据上述流程，分析对应的动作，然后回答用户的问题。
下放和回收总体流程相似，你需要仔细判断是下放阶段还是回收阶段，通常上午下放，下午回收，下放阶段ON DP（动力定位开启）时间长。回收阶段比较小，
总体来说以上操作有一定逻辑性，你需要按照逻辑分析动作。
表格的特征是按照最粗标准划分的，有些特征行实际没有动作，你需要根据动作逻辑，找到最有可能的特征行分析。

分析示例:
---
| Ajia-3_v   | Ajia-5_v   |   13-11-6_v |   P3_33 |   P3_18 | csvTime             | 特征                                                                                                                   |
|:-----------|:-----------|------------:|--------:|--------:|:--------------------|:-----------------------------------------------------------------------------------------------------------------------|
| error      | error      |           0 |       0 |       0 | 2024-10-09 07:17:00 | nan                                                                                                                    |
| error      | error      |           0 |       0 |       0 | 2024-10-09 07:18:00 | nan                                                                                                                    |
| error      | error      |           0 |     575 |      83 | 2024-10-09 07:19:00 | `ON DP `特征行                                                                                                         |
| error      | error      |           0 |     583 |      83 | 2024-10-09 07:20:00 | nan                                                                                                                    |
| error      | error      |           0 |     553 |      85 | 2024-10-09 07:21:00 | nan                                                                                                                    |
| error      | error      |           0 |     772 |      88 | 2024-10-09 07:49:00 | nan                                                                                                                    |
| error      | error      |           0 |     776 |      96 | 2024-10-09 07:50:00 | nan                                                                                                                    |
| 0          | 0          |           0 |     769 |      91 | 2024-10-09 07:51:00 | `A架开机`特征行                                                                                                        |
| 0          | 0          |           6 |     773 |      98 | 2024-10-09 07:52:00 | `折臂吊车开机`特征行                                                                                                   |
| 0          | 0          |           6 |     764 |      84 | 2024-10-09 07:53:00 | nan                                                                                                                    |
| 0          | 0          |           6 |     777 |     105 | 2024-10-09 07:54:00 | nan                                                                                                                    |
| 0          | 0          |           6 |     764 |      88 | 2024-10-09 08:16:00 | nan                                                                                                                    |
| 0          | 0          |           6 |     772 |      93 | 2024-10-09 08:17:00 | nan                                                                                                                    |
| 0          | 0          |          21 |     769 |      88 | 2024-10-09 08:18:00 | 折臂吊车动作，数值增加（回落前的最后一个值）,对应`小艇检查完毕`,`小艇入水`,`小艇落座`特征行                            |
| 0          | 0          |           6 |     754 |      87 | 2024-10-09 08:19:00 | nan                                                                                                                    |
| 0          | 0          |          27 |     758 |      88 | 2024-10-09 08:20:00 | nan                                                                                                                    |
| 0          | 0          |          45 |     775 |     118 | 2024-10-09 08:21:00 | nan                                                                                                                    |
| 0          | 0          |          31 |     755 |      88 | 2024-10-09 08:22:00 | nan                                                                                                                    |
| 0          | 0          |          12 |     770 |      90 | 2024-10-09 08:23:00 | nan                                                                                                                    |
| 0          | 0          |           6 |     761 |      84 | 2024-10-09 08:24:00 | nan                                                                                                                    |
| 0          | 0          |           6 |     736 |      86 | 2024-10-09 08:25:00 | nan                                                                                                                    |
| 56.0594    | 56.424     |           6 |     744 |      91 | 2024-10-09 08:38:00 | nan                                                                                                                    |
| 62.2852    | 60.9655    |           6 |     763 |      91 | 2024-10-09 08:39:00 | nan                                                                                                                    |
| 56.0988    | 56.5682    |          57 |     751 |      85 | 2024-10-09 08:40:00 | 折臂吊车动作，数值增加（回落前的最后一个值）,对应`小艇检查完毕`,`小艇入水`,`小艇落座`特征行                            |
| 58.1012    | 56.5271    |           6 |     754 |      91 | 2024-10-09 08:41:00 | nan                                                                                                                    |
| 67.0497    | 56.5444    |           6 |     791 |     139 | 2024-10-09 08:42:00 | nan                                                                                                                    |
| 55.9713    | 56.5061    |           6 |     756 |      93 | 2024-10-09 08:43:00 | nan                                                                                                                    |
| 57.4577    | 56.6392    |           6 |     756 |      86 | 2024-10-09 08:44:00 | nan                                                                                                                    |
| 95.6776    | 92.7411    |           6 |     743 |      83 | 2024-10-09 08:45:00 | `征服者起吊`特征行                                                                                                     |
| 91.843     | 89.0183    |           6 |     747 |      98 | 2024-10-09 08:46:00 | nan                                                                                                                    |
| 87.9325    | 85.6611    |           6 |     738 |      99 | 2024-10-09 08:47:00 | nan                                                                                                                    |
| 55.8041    | 56.6927    |           6 |     711 |      94 | 2024-10-09 08:48:00 | A架从高值回落稳定，如果是下放阶段，为`缆绳解除`特征行，前一分钟为:`征服者入水`，如果是回收阶段，为`征服者落座`特征行。 |
| 56.0782    | 56.6444    |           6 |     710 |     100 | 2024-10-09 08:49:00 | nan                                                                                                                    |
| 55.8184    | 56.5566    |           6 |     742 |      85 | 2024-10-09 08:50:00 | nan                                                                                                                    |
| 58.8058    | 56.6262    |           6 |     725 |      91 | 2024-10-09 08:51:00 | nan                                                                                                                    |
| 55.9402    | 56.459     |           6 |     761 |      89 | 2024-10-09 08:52:00 | nan                                                                                                                    |
| 70.6423    | 68.6107    |           6 |     746 |      89 | 2024-10-09 08:53:00 | `征服者起吊`特征行                                                                                                     |
| 105.372    | 102.333    |          19 |     736 |      90 | 2024-10-09 08:54:00 | `A架摆回`,`A架摆出`特征行，征服者入水后，为摆回，征服者起吊前，为摆出                                                  |
| 101.892    | 99.06      |          23 |     717 |      84 | 2024-10-09 08:55:00 | nan                                                                                                                    |
| 56.0882    | 56.8473    |          51 |     759 |      87 | 2024-10-09 08:56:00 | A架从高值回落稳定，如果是下放阶段，为`缆绳解除`特征行，前一分钟为:`征服者入水`，如果是回收阶段，为`征服者落座`特征行。 |
| 56.0296    | 56.5756    |          34 |     808 |      81 | 2024-10-09 08:57:00 | nan                                                                                                                    |
| 56.3787    | 57.1446    |          30 |       0 |       0 | 2024-10-09 08:58:00 | 折臂吊车动作，数值增加（回落前的最后一个值）,对应`小艇检查完毕`,`小艇入水`,`小艇落座`特征行,`OFF DP`特征行             |
| 0          | 0          |           0 |       0 |       0 | 2024-10-09 09:01:00 | `折臂吊车关机`特征行                                                                                                   |
| 0          | 0          |           0 |       0 |       0 | 2024-10-09 09:02:00 | nan                                                                                                                    |
| 0          | 0          |           0 |       0 |       0 | 2024-10-09 09:03:00 | nan                                                                                                                    |
| 0          | 0          |           0 |       0 |       0 | 2024-10-09 09:04:00 | nan                                                                                                                    |
| 0          | 0          |           0 |       0 |       0 | 2024-10-09 09:05:00 | `A架关机`特征行                                                                                                        |
| error      | error      |           0 |       0 |       0 | 2024-10-09 09:06:00 | nan                                                                                                                    |
| error      | error      |           0 |       0 |       0 | 2024-10-09 09:07:00 | nan                                                                                                                    |
| error      | error      |           0 |       0 |       0 | 2024-10-09 09:08:00 | nan                                                                                                                    |
| error      | error      |           0 |       0 |       0 | 2024-10-09 16:00:00 | nan                                                                                                                    |
| error      | error      |           0 |       0 |       0 | 2024-10-09 16:01:00 | nan                                                                                                                    |
| 0          | 0          |           0 |       0 |       0 | 2024-10-09 16:02:00 | `A架开机`特征行                                                                                                        |
| 0          | 0          |           0 |       0 |       0 | 2024-10-09 16:03:00 | nan                                                                                                                    |
| 0          | 0          |           0 |       0 |       0 | 2024-10-09 16:04:00 | nan                                                                                                                    |
| 0          | 0          |           6 |       0 |       0 | 2024-10-09 16:05:00 | `折臂吊车开机`特征行                                                                                                   |
| 0          | 0          |           6 |       0 |       0 | 2024-10-09 16:06:00 | nan                                                                                                                    |
| 0          | 0          |           6 |       0 |       0 | 2024-10-09 16:07:00 | nan                                                                                                                    |
| 65.0654    | 63.853     |           6 |       0 |       0 | 2024-10-09 16:25:00 | nan                                                                                                                    |
| 67.559     | 65.7534    |           6 |       0 |       0 | 2024-10-09 16:26:00 | nan                                                                                                                    |
| 89.9299    | 87.7618    |           6 |       0 |       0 | 2024-10-09 16:27:00 | nan                                                                                                                    |
| 87.3453    | 85.487     |           6 |       0 |       0 | 2024-10-09 16:28:00 | nan                                                                                                                    |
| 55.9619    | 56.6143    |          17 |       0 |       0 | 2024-10-09 16:29:00 | A架从高值回落稳定，如果是下放阶段，为`缆绳解除`特征行，前一分钟为:`征服者入水`，如果是回收阶段，为`征服者落座`特征行。 |
| 56.037     | 62.7742    |          39 |       0 |       0 | 2024-10-09 16:30:00 | nan                                                                                                                    |
| 56.0598    | 56.8385    |          41 |       0 |       0 | 2024-10-09 16:31:00 | 折臂吊车动作，数值增加（回落前的最后一个值）,对应`小艇检查完毕`,`小艇入水`,`小艇落座`特征行                            |
| 56.1255    | 56.7747    |           6 |       0 |       0 | 2024-10-09 16:32:00 | nan                                                                                                                    |
| 56.2798    | 0          |           6 |       0 |       0 | 2024-10-09 16:33:00 | nan                                                                                                                    |
| 0          | 0          |          17 |       0 |       0 | 2024-10-09 16:34:00 | nan                                                                                                                    |
| 0          | 0          |           6 |       0 |       0 | 2024-10-09 16:35:00 | nan                                                                                                                    |
| 0          | 0          |           6 |       0 |       0 | 2024-10-09 16:36:00 | nan                                                                                                                    |
| 0          | 0          |           6 |       0 |       0 | 2024-10-09 16:37:00 | nan                                                                                                                    |
| 0          | 0          |           6 |     910 |     129 | 2024-10-09 16:38:00 | `ON DP `特征行                                                                                                         |
| 0          | 0          |           6 |     904 |      85 | 2024-10-09 16:39:00 | nan                                                                                                                    |
| 0          | 0          |           6 |     898 |      83 | 2024-10-09 16:40:00 | nan                                                                                                                    |
| 0          | 0          |           6 |     910 |      80 | 2024-10-09 16:42:00 | nan                                                                                                                    |
| 0          | 0          |           6 |     910 |      82 | 2024-10-09 16:43:00 | nan                                                                                                                    |
| 0          | 0          |          29 |     910 |      79 | 2024-10-09 16:44:00 | 折臂吊车动作，数值增加（回落前的最后一个值）,对应`小艇检查完毕`,`小艇入水`,`小艇落座`特征行                            |
| 0          | 0          |           6 |     910 |      84 | 2024-10-09 16:45:00 | nan                                                                                                                    |
| 0          | 0          |           6 |     894 |      85 | 2024-10-09 16:46:00 | nan                                                                                                                    |
| 55.6802    | 56.1241    |           6 |     910 |      99 | 2024-10-09 16:56:00 | nan                                                                                                                    |
| 58.6047    | 59.3447    |           6 |     903 |      84 | 2024-10-09 16:57:00 | nan                                                                                                                    |
| 55.6534    | 56.1931    |           6 |     910 |      81 | 2024-10-09 16:58:00 | nan                                                                                                                    |
| 102.241    | 99.3618    |           6 |       0 |       0 | 2024-10-09 17:00:00 | `A架摆回`,`A架摆出`特征行，征服者入水后，为摆回，征服者起吊前，为摆出,`OFF DP`特征行                                   |
| 68.7418    | 68.0395    |          35 |       0 |       0 | 2024-10-09 17:01:00 | nan                                                                                                                    |
| 61.7449    | 61.744     |          35 |       0 |       0 | 2024-10-09 17:02:00 | nan                                                                                                                    |
| 58.2711    | 58.0643    |          32 |       0 |       0 | 2024-10-09 17:03:00 | A架从高值回落稳定，如果是下放阶段，为`缆绳解除`特征行，前一分钟为:`征服者入水`，如果是回收阶段，为`征服者落座`特征行。 |
| 55.8912    | 56.601     |          31 |       0 |       0 | 2024-10-09 17:04:00 | 折臂吊车动作，数值增加（回落前的最后一个值）,对应`小艇检查完毕`,`小艇入水`,`小艇落座`特征行                            |
| 57.8389    | 57.9306    |           6 |       0 |       0 | 2024-10-09 17:05:00 | nan                                                                                                                    |
| 55.9934    | 56.6459    |           6 |       0 |       0 | 2024-10-09 17:06:00 | nan                                                                                                                    |
| 0          | 0          |           6 |       0 |       0 | 2024-10-09 17:11:00 | nan                                                                                                                    |
| 0          | 0          |           6 |       0 |       0 | 2024-10-09 17:12:00 | nan                                                                                                                    |
| 0          | 0          |           0 |       0 |       0 | 2024-10-09 17:13:00 | nan                                                                                                                    |
| 0          | 0          |           0 |       0 |       0 | 2024-10-09 17:14:00 | nan                                                                                                                    |
| 0          | 0          |           7 |       0 |       0 | 2024-10-09 17:15:00 | `折臂吊车开机`特征行                                                                                                   |
| 0          | 0          |           6 |       0 |       0 | 2024-10-09 17:16:00 | nan                                                                                                                    |
| 0          | 0          |           6 |       0 |       0 | 2024-10-09 17:17:00 | nan                                                                                                                    |
| 0          | 0          |           6 |       0 |       0 | 2024-10-09 17:20:00 | nan                                                                                                                    |
| 0          | 0          |           6 |       0 |       0 | 2024-10-09 17:21:00 | nan                                                                                                                    |
| 0          | 0          |           0 |       0 |       0 | 2024-10-09 17:22:00 | `折臂吊车关机`特征行                                                                                                   |
| 0          | 0          |           0 |       0 |       0 | 2024-10-09 17:23:00 | `A架关机`特征行                                                                                                        |
| error      | error      |           0 |       0 |       0 | 2024-10-09 17:24:00 | nan                                                                                                                    |
| error      | error      |           0 |       0 |       0 | 2024-10-09 17:25:00 | nan                                                                                                                    |
| error      | error      |           0 |       0 |       0 | 2024-10-09 17:26:00 | nan                                                                                                                    |
---
<think>
我需要回顾之前用户提供的规则和数据。规则分为下放阶段和回收阶段，每个阶段有多个动作，每个动作对应特定的字段变化。数据表格中包含了各个字段在不同时间点的值。

首先我观察到从2024-10-09 07:19:00 - 2024-10-09 09:06:00 这段连续的时间内机器有多个动作，DP,A架,小艇，折臂吊车器械均有启动。
再次仔细观察这段时间的动作，13-11-6_v 大部分时间 > 0 说明这段时间是开启动力定位进行作业，可以确定2024-10-09 07:19:00 - 2024-10-09 09:06:00 这段时间进行的是下放阶段。

然后我发现 2024-10-09 16:02:00 A架开机后，一直到 2024-10-09 17:24:00 A架关机，发生了很多动作，DP,A架,小艇，折臂吊车器械均有启动，DP启动较晚。
考虑到之前为下放阶段，所以 024-10-09 16:02:00 - 2024-10-09 17:24:00 为回收阶段。

接下来，我需要确定如何按照逻辑顺序展开分析。对于下放阶段，动作顺序大致是：ON DP → A架开机 → 折臂吊车开机 → 小艇检查完毕 → 小艇入水 → 征服者起吊 → 征服者入水 → 缆绳解除 → A架摆回 → 小艇落座 → 折臂吊车关机 → A架关机 → OFF DP。回收阶段的顺序类似，但动作有所不同，比如A架摆出、缆绳挂妥、征服者出水等。

在分析过程中，需要逐步检查每个时间点的字段变化，判断是否符合某个动作的触发规则。例如，ON DP的判断是P3_33或P3_18从0开始增加。需要找到数据中第一个这样的时间点，即2024-10-09 07:19:00，这时P3_33从0变为575，P3_18变为83，因此标记为ON DP。

接下来是A架开机，需要检查Ajia-3_v和Ajia-5_v从error变为0的时间点，即07:51:00。然后是折臂吊车开机，13-11-6_v从0增加到6，对应07:52:00。

小艇检查完毕需要观察13-11-6_v增加到某个值后回落的峰值。例如在08:18:00，该值从21回落到6，因此峰值在08:18:00，标记为小艇检查完毕。类似的方法用于小艇入水，找到08:40:00的峰值57，随后回落。

征服者起吊对应Ajia字段从稳定值（约50多）增加到峰值，如08:45:00的95.67和92.74。征服者入水则根据缆绳解除时间（08:48:00）前推一分钟，确定为08:47:00。

缆绳解除是Ajia字段从高值回落到稳定值，08:48:00的值符合这一条件。A架摆回在征服者入水后电流重新增加，08:54:00的峰值符合。小艇落座在13-11-6_v的峰值51回落时确定，同时P3字段归零，对应08:58:00。

折臂吊车关机在13-11-6_v归零的时间点，如09:01:00。A架关机是Ajia字段变为error，即09:06:00。OFF DP则是P3字段归零的时间，08:58:00。

回收阶段的分析类似，从A架开机开始，逐步推导各个动作。需要注意回收阶段的特定规则，如A架摆出在征服者起吊前的峰值，缆绳挂妥在征服者出水前一分钟等。

在思考过程中，可能会遇到数据中的异常或需要修正的地方，例如下放阶段的OFF DP时间最初可能被错误标记，需要根据P3字段的实际归零时间来调整。此外，某些动作可能被多次触发，需要结合阶段和前后动作来判断正确的顺序。

需要确保每个动作的推理都明确依据规则，并引用具体的时间点和字段值变化。同时，解释每个步骤的逻辑，确保用户能够理解如何从原始数据推导出结果。

最后，组织整个分析过程，按照阶段和动作顺序逐步展开，避免遗漏关键步骤，并验证每个动作的时间点是否符合整体作业流程的逻辑。
</think>

以下是根据原始数据对深海作业A下放阶段和回收阶段的完整推理过程，严格按照作业流程逻辑进行分析：

### **下放阶段分析（07:19:00-09:06:00）**

#### **1. 确定阶段起始点：动力定位开启（ON DP）**
• **关键字段**：P3_33、P3_18  
• **数据观察**：  
  • 07:17:00和07:18:00时，P3_33=0、P3_18=0  
  • **07:19:00**，P3_33突增至575，P3_18增至83  
• **推理结论**：  
  P3字段首次从0开始增加，符合“ON DP”规则，**下放阶段开始于07:19:00**。

---

#### **2. A架开机**
• **关键字段**：Ajia-3_v、Ajia-5_v  
• **数据观察**：  
  • 07:51:00前，Ajia字段均为"error"  
  • **07:51:00**，Ajia-3_v=0、Ajia-5_v=0  
• **推理结论**：  
  Ajia字段从"error"变为0，符合“A架开机”规则，**A架开机时间为07:51:00**。

---

#### **3. 折臂吊车开机**
• **关键字段**：13-11-6_v  
• **数据观察**：  
  • **07:52:00**，13-11-6_v从0跳增至6  
  • 后续时间点该值持续≥6  
• **推理结论**：  
  数值首次从0开始增加，符合“折臂吊车开机”规则，**开机时间为07:52:00**。

---

#### **4. 小艇检查完毕**
• **关键字段**：13-11-6_v  
• **数据观察**：  
  • **08:21:00**，13-11-6_v=45（峰值）  
  • 08:24:00回落至6  
• **推理结论**：  
  峰值45后回落，其中08:19分电压为6，最合理的解释为可能是此次检查中间遇到一些问题，根据“小艇检查完毕”规则推测，**检查完成时间为08:21:00**。

---

#### **5. 小艇入水**
• **关键字段**：13-11-6_v  
• **数据观察**：  
  • **08:40:00**，13-11-6_v=57（历史最高值）  
  • 08:41:00回落至6  
• **推理结论**：  
  数值达到阶段内最大峰值后回落，符合“小艇入水”规则，**入水时间为08:40:00**。

---

#### **6. 征服者起吊**
• **关键字段**：Ajia-3_v、Ajia-5_v  
• **数据观察**：  
  • 08:44:00前，Ajia字段≈56（稳定值）  
  • **08:45:00**，Ajia-3_v突增至95.68，Ajia-5_v=92.74  
• **推理结论**：  
  电流从稳定值50+显著增加，符合“征服者起吊”规则，**起吊时间为08:45:00**。

---

#### **7. 征服者入水**
• **关键规则**：缆绳解除时间前推1分钟  
• **数据观察**：  
  • **08:48:00**，Ajia字段从87.93/85.66回落至55.80/56.69（缆绳解除）  
• **推理结论**：  
  根据规则反向推导，**征服者入水时间为08:47:00**。

---

#### **8. 缆绳解除**
• **关键字段**：Ajia-3_v、Ajia-5_v  
• **数据观察**：  
  • **08:48:00**，Ajia字段从高值回落到≈56（稳定值）  
• **推理结论**：  
  电流回落至稳定范围，符合“缆绳解除”规则，**解除时间为08:48:00**。

---

#### **9. A架摆回**
• **关键字段**：Ajia-3_v、Ajia-5_v  
• **数据观察**：  
  • **08:54:00**，Ajia-3_v=105.37、Ajia-5_v=102.33（征服者入水后新峰值）  
• **推理结论**：  
  征服者入水后电流重新达到峰值，符合“A架摆回”规则，**摆回时间为08:54:00**。

---

#### **10. 小艇落座**
• **关键字段**：13-11-6_v  
• **数据观察**：  
  • **08:58:00**，13-11-6_v=51（峰值）  
  • 同时P3_33/P3_18归零（OFF DP）  
• **推理结论**：  
  峰值51后数值归零，且动力定位关闭，**落座时间为08:58:00**。

---

#### **11. 折臂吊车关机**
• **关键字段**：13-11-6_v  
• **数据观察**：  
  • **09:01:00**，13-11-6_v从6归零  
• **推理结论**：  
  数值归零符合“折臂吊车关机”规则，**关机时间为09:01:00**。

---

#### **12. A架关机**
• **关键字段**：Ajia-3_v、Ajia-5_v  
• **数据观察**：  
  • **09:06:00**，Ajia字段从0变为"error"  
• **推理结论**：  
  字段值变为"error"，符合“A架关机”规则，**关机时间为09:06:00**。

---

#### **13. OFF DP（动力定位关闭）**
• **关键字段**：P3_33、P3_18  
• **数据观察**：  
  • **08:58:00**，P3_33=0、P3_18=0（早于A架关机）  
• **推理结论**：  
  动力定位在作业末期关闭，**OFF DP时间为08:58:00**。

---

### **回收阶段分析（16:02:00-17:24:00）**

#### **1. A架开机**
• **关键字段**：Ajia-3_v、Ajia-5_v  
• **数据观察**：  
  • **16:02:00**，Ajia字段从"error"变为0  
• **推理结论**：  
  Ajia状态变更，**回收阶段开始于16:02:00**。

---

#### **2. 折臂吊车开机**
• **关键字段**：13-11-6_v  
• **数据观察**：  
  • **16:05:00**，13-11-6_v从0跳增至6  
• **推理结论**：  
  数值首次增加，**开机时间为16:05:00**。

---

#### **3. A架摆出**
• **关键字段**：Ajia-3_v、Ajia-5_v  
• **数据观察**：  
  • **16:27:00**，Ajia-3_v=89.93、Ajia-5_v=87.76（征服者起吊前峰值）  
• **推理结论**：  
  电流峰值出现在征服者出水前，符合“A架摆出”规则，**摆出时间为16:27:00**。

---

#### **4. 小艇检查完毕**
• **关键字段**：13-11-6_v  
• **数据观察**：  
  • **16:31:00**，13-11-6_v=41（峰值）  
• **推理结论**：  
  峰值后数值回落，**检查完成时间为16:31:00**。

---

#### **5. 小艇入水**
• **关键字段**：13-11-6_v  
• **数据观察**：  
  • **16:44:00**，13-11-6_v=29（峰值）  
• **推理结论**：  
  数值达到回收阶段峰值，**入水时间为16:44:00**。

---

#### **6. 缆绳挂妥**
• **关键规则**：征服者出水前1分钟  
• **数据观察**：  
  • **17:00:00**征服者出水（Ajia峰值102.24）  
  • **16:58:00**Ajia开始增加  
• **推理结论**：  
  提前1分钟挂妥缆绳，**挂妥时间为16:58:00**。

---

#### **7. 征服者出水**
• **关键字段**：Ajia-3_v、Ajia-5_v  
• **数据观察**：  
  • **17:00:00**，Ajia-3_v=102.24、Ajia-5_v=99.36（阶段内最高值）  
• **推理结论**：  
  电流达到峰值，**出水时间为17:00:00**。

---

#### **8. 征服者落座**
• **关键字段**：Ajia-3_v、Ajia-5_v  
• **数据观察**：  
  • **17:03:00**，Ajia字段从58.27/58.06回落至55.89/56.60  
• **推理结论**：  
  电流回落到稳定值，**落座时间为17:03:00**。

---

#### **9. 小艇落座**
• **关键字段**：13-11-6_v  
• **数据观察**：  
  • **17:04:00**，13-11-6_v=31（峰值后回落）  
• **推理结论**：  
  数值最后一次峰值，**落座时间为17:04:00**。

---

#### **10. 设备关闭**
• **折臂吊车关机**（17:13:00，13-11-6_v归零）  
• **A架关机**（17:24:00，Ajia变为"error"）

---

### **关键逻辑验证**
1. **阶段划分依据**：  
   • 下放阶段：ON DP覆盖07:19:00-08:58:00（P3_33>0）  
   • 回收阶段：无连续DP覆盖（仅在16:38:00短暂出现ON DP，但未持续）

2. **动作顺序完整性**：  
   • 下放阶段闭环：从ON DP到OFF DP，所有设备完成启停循环  
   • 回收阶段闭环：A架/折臂吊车完成二次启停，征服者完成出水-落座流程

3. **异常数据处理**：  
   • 09:05:00标注"A架关机"但Ajia字段仍为0（实际关机在09:06:00变为"error"）  
   • 16:38:00短暂出现ON DP（P3_33=910），但因不构成连续覆盖，不计入阶段划分

---

通过逐步追踪字段变化、严格匹配规则、验证动作顺序闭环性，最终还原出完整的作业流程。

---
你的回答需要按照示例的格式。先在<think></think>内思考分析，然后再进行输出。
你只能通过自然语言分析获得结果，如果数据量过大（超过10天），你只需简单分析得出结论。
如果没有完整的下放或者回收的数据，则当日可能没有进行深海作业，此时只要输出开关机时间即可。
'''

time_prompt = '''
请提取以下问题中的时间范围，如果明确时分，则开始时间提前十五分钟，结束时间延时15分钟，只有日期无需提前和延时,只有一个之间点则前后反馈扩展到1h

按照
```json
[
{"start_time":"yyyy-mm-dd hh:mm:ss","end_time":"yyyy-mm-dd hh:mm:ss"},
...
]
```
的格式输出。
示例:
user:2024/8/24 8:45 ~ 8:55之间，发生了哪些关键动作,9月10号呢？
assistant:```json
[
  {"start_time":"2024-08-24 08:30:00","end_time":"2024-08-24 09:10:00"},
  {"start_time":"2024-09-10 00:00:00","end_time":"2024-09-11 00:00:00"}
]
```
user:2024/8/24 8:45，发生了什么动作？
assistant:```json
[
  {"start_time":"2024-08-24 07:45:00","end_time":"2024-08-24 09:45:00"}
]
```
'''


class DeepSeaAgent(Agent):

    def __init__(self, name,
                 description,
                 system_prompt,
                 agent_type,
                 llm_engine,
                 agents=None,
                 rag=None, sample=None):
        super().__init__(name,
                         description,
                         system_prompt,
                         agent_type,
                         llm_engine,
                         agents,
                         rag)

        self.sample = sample

    def _get_data(self, start_time, end_time):
        data = {"数据": {
            "Ajia_plc_1": ["Ajia-3_v", "Ajia-5_v", "csvTime"],
            "device_13_11_meter_1311": ["13-11-6_v", "csvTime"],
            "Port3_ksbg_9": ["P3_33", "P3_18", "csvTime"],
        }, "时间": {
            "开始": start_time,
            "结束": end_time
        }}

        df = process_data(data)
        detector = ActionDetector(df)
        df2 = detector.preprocess(detect_list)
        # Ajia-3_v   | Ajia-5_v   | csvTime             |   13-11-6_v |   P3_33 |   P3_18
        df2 = df2[['Ajia-3_v', 'Ajia-5_v', '13-11-6_v', 'P3_33', 'P3_18', 'csvTime', '特征']]
        res = df2.to_markdown(index=False)
        return res
        # if len(enc.encode(res)) < 10000:
        #     return res
        #
        # df2 = df2[df2['特征'].apply(lambda x: len(str(x)) > 5)]
        # res = df2.to_markdown(index=False)
        # if len(enc.encode(res)) < 10000:
        #     return res
        # df2 = df2[df2['特征'].apply(lambda x: len(str(x)) > 5)]
        # df2 = df2[['csvTime', '特征']]
        # res = df2.to_markdown(index=False)
        # if len(enc.encode(res)) < 10000:
        #     return res
        # df2 = df2[df2['特征'].apply(lambda x: re.search("开机|关机", str(x)))]
        # df2 = df2[['csvTime', '特征']]
        # res = df2.to_markdown(index=False)
        # return res

    def get_data(self, start_time, end_time):
        return re.sub('       +', '       ', self._get_data(start_time, end_time))

    def del_row(self, content: str):
        content_list = content.split('\n')
        content_list = [i for i in content_list if not re.search('\| +\|', i)]
        if len(content_list) > 50:
            content_list = content_list[:20] + content_list[-20:]
        return '\n'.join(content_list)

    def build_prompt(self, question):
        self.messages = [{"role": "system", "content": self.system_prompt},
                         ]
        sample_msg = self.sample.get_sample(question, 1)
        # for i in sample_msg[0]:
        #     if ' 的数据如下：' in i['content']:
        #         i['content'] = self.del_row(i['content'])
        #
        msg = sample_msg[0]
        self.messages.extend(msg)

    def get_df_data(self, start_time, end_time):
        df = pd.read_excel('mark3.xlsx')

        # 将 csvTime 列转换为日期时间格式
        df['csvTime'] = pd.to_datetime(df['csvTime'])

        # 将输入的 start_time 和 end_time 转换为日期时间格式
        start_time = pd.to_datetime(start_time)
        end_time = pd.to_datetime(end_time)

        # 按照时间过滤数据
        filtered_df = df[(df['csvTime'] >= start_time) & (df['csvTime'] <= end_time)]

        return filtered_df

    def file_call(self, question, time_range):
        combined_df = pd.DataFrame()
        for i in time_range:
            sub_df = self.get_df_data(i["start_time"], i["end_time"])
            combined_df = pd.concat([combined_df, sub_df], ignore_index=True)

        combined_df = combined_df[['actionType', 'deviceName', 'actionName', 'csvTimeMinute']]

        self.messages = [{"role": "user",
                          "content": f'''
数据如下：
---
{combined_df.to_markdown(index=False)}
---
当前问题：{question}
请基于日志思考分析并回答题目，注意对齐数据的实体名称和动作名称。
'''}]

        sea_log = self.llm_engine(self.messages)

        return sea_log

    def run(self, question):
        time_range = self.llm_engine([{"role": "system", "content": time_prompt},
                                      {"role": "user", "content": question + '\n请输出时间范围json:'}])
        time_range = super_eval(time_range)
        # self.messages = [{"role": "system", "content": self.system_prompt},
        #                  ]

        # 初始化总分钟数
        total_minutes = 0

        # 计算每个时间段的分钟数并累加
        for period in time_range:
            start_time = datetime.strptime(period["start_time"], "%Y-%m-%d %H:%M:%S")
            end_time = datetime.strptime(period["end_time"], "%Y-%m-%d %H:%M:%S")
            duration = end_time - start_time
            total_minutes += duration.total_seconds() / 60

        total_day = total_minutes / 60 / 24

        if total_day > 2:
            return self.file_call(question, time_range)

        self.build_prompt(question)
        sea_log = ''

        for i in time_range:
            processed_data = self.get_data(i["start_time"], i["end_time"])
            print('数据为：', processed_data)
            self.messages.append({"role": "user",
                                  "content": f'''
当前问题：{question}
其中:{i["start_time"]} - {i["end_time"]} 的数据如下：
---
{processed_data}
---
请基于日志思考分析题目,只回答日志可以覆盖到的答案，重新思考。
'''})

            sea_log += self.llm_engine(self.messages)

        with open('./sample/deepsea3.jsonl', 'a', encoding='utf-8') as fw:
            fw.write(
                json.dumps({"question": question, "messages": self.messages[1:]}, ensure_ascii=False)
            )
            fw.write('\n')

        return re.sub('<think>.*?</think>', '', sea_log, re.DOTALL)


from get_sample import get_deepsea_sample

DeepSeaAgentConfig = {"name": 'xxx',
                      "description": 'xxx',
                      'system_prompt': prompt,
                      'agent_type': 'plan-action',
                      'llm_engine': llm,
                      'sample': get_deepsea_sample(),
                      'agents': None}

deep_sea_agent = DeepSeaAgent(**DeepSeaAgentConfig)
